stylecontext: Do not transition from the default style
authorBenjamin Otte <otte@redhat.com>
Tue, 13 Jan 2015 12:45:42 +0000 (13:45 +0100)
committerBenjamin Otte <otte@redhat.com>
Sat, 17 Jan 2015 01:25:40 +0000 (02:25 +0100)
This gets rid of a bunch of awkward transitions. It's not a perfect
solution to the problem of "should we transition from this state" but it
gets rid of the ugliest offenders.

gtk/gtkstylecontext.c

index 25385f0b23fa608129351729333ab1ab6cf37e06..19c2d0ccb8f730f91bb649abed0f735bad0938e1 100644 (file)
@@ -2870,7 +2870,8 @@ gtk_style_context_update_cache (GtkStyleContext  *context,
 }
 
 static gboolean
-gtk_style_context_should_create_transitions (GtkStyleContext *context)
+gtk_style_context_should_create_transitions (GtkStyleContext *context,
+                                             GtkCssStyle     *previous_style)
 {
   GtkStyleContextPrivate *priv;
   gboolean animate;
@@ -2883,6 +2884,9 @@ gtk_style_context_should_create_transitions (GtkStyleContext *context)
   if (!gtk_widget_get_mapped (priv->widget))
     return FALSE;
 
+  if (previous_style == gtk_css_static_style_get_default (priv->screen))
+    return FALSE;
+
   g_object_get (gtk_widget_get_settings (context->priv->widget),
                 "gtk-enable-animations", &animate,
                 NULL);
@@ -2945,7 +2949,7 @@ _gtk_style_context_validate (GtkStyleContext  *context,
                                           timestamp,
                                           GTK_STYLE_PROVIDER_PRIVATE (priv->cascade),
                                           priv->scale,
-                                          gtk_style_context_should_create_transitions (context) ? current : NULL);
+                                          gtk_style_context_should_create_transitions (context, current) ? current : NULL);
 
       gtk_css_node_set_values (cssnode, style);